/**  
* @Title: BuildHtmlCode.java  
* @Description: TODO(用一句话描述该文件做什么)  
* @author 张鑫
* @phone 17561783855  
* @date 2019年6月20日  
*/
package com.fortune.rainshine.system.controller;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;

import com.fortune.rainshinecommon.model.system.Role;
import com.fortune.rainshinecommon.model.system.User;

/**
 * @ClassName: BuildHtmlCode
 * @Description: TODO(根据模板,自动生成html页面)
 * @author 张鑫
 * @phone 17561783855
 * @date 2019年6月20日
 * 
 */
public class BuildHtmlCode {
	
	/*
	 * public static void main(String args[]) { contextLoads(); }
	 */
	
	

	public static void contextLoads() {
		String filePath = "E:\\html\\loanitem_grid.html";
		String title = "测试测试";
		Object model = new User();
		String disrPath = "E:\\html\\make";
		MakeHtml(filePath, title, disrPath, model);
	}

	public static void MakeHtml(String filePath, String title, String disrPath, Object model) {
		try {
			//获取对象名称
			String modelName = model.getClass().getSimpleName().toLowerCase();
			//生成弹出框代码
			String modelHtml = " ";
			//读取模板内容
			FileInputStream fileinputstream = new FileInputStream(filePath);// 读取模板文件
			int lenght = fileinputstream.available();
			byte bytes[] = new byte[lenght];
			fileinputstream.read(bytes);
			fileinputstream.close();
			
			//生成tableHead替换内容
			List<Map<String,Object>> list = new ArrayList<>();
			Field[] fields=model.getClass().getDeclaredFields();  
		    for(int i=0;i<fields.length;i++){ 
		    	//拼接tableHead数据
		    	Map<String,Object> map = new HashMap<String, Object>();
		    	map.put("field",  "\'"+fields[i].getName() + "\'" );
		    	map.put("title", "\'"+fields[i].getName() + "\'");
		    	map.put("align", "'center'");
		    	list.add(map);
		    	//拼接弹出框的html内容
		    	modelHtml += templateHtml(fields[i]);
		    }
		    //tableHead操作内容数据拼接
		    Map<String,Object> map = new HashMap<String, Object>();
		    map.put("fixed",  "'right'" );
	    	map.put("title", "'操作'");
	    	map.put("align", "'center'");
	    	map.put("toolbar",  "'#row_operation'" );
	    	map.put("width", 100);
	    	list.add(map);
	    	
	    	
			//替换模板内容
			String templateContent = "";
			templateContent = new String(bytes);
			//替换tableHead
			templateContent = templateContent.replaceAll("###tableHead###",StringUtils.join(list.toArray(), ",\r\n"));
			//替换请求路径
			templateContent = templateContent.replaceAll("###baseMethodUrl###","'"+modelName+"'");
			//替换弹出框内容
			templateContent = templateContent.replaceAll("###modelHtml###", modelHtml);
	
			
			//生成文件名称
			String fileame = modelName + ".html";
			// 生成的html文件保存路径。
            fileame = disrPath+"/" + fileame;
            // 建立文件输出流
            FileOutputStream fileoutputstream = new FileOutputStream(fileame);
            byte tag_bytes[] = templateContent.getBytes();
            System.out.println("恭喜你,html生成成功。生成文件所在路径为---"+fileame);
            fileoutputstream.write(tag_bytes);
            fileoutputstream.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	} 
	
	
	/**
	 * @Title: templateHtml
	 * @Description: 生成弹出框代码
	 * @author zhangxin
	 * @return 
	 * @phone 17561783855
	 * @date 2019年6月20日
	 */
	public static String templateHtml(Field field) {
		String html = "    <div class=\"layui-form-item\">\r\n" + 
				"        <label class=\"layui-form-label\">"+field.getName()+"：</label>\r\n" + 
				"        <div class=\"layui-input-block\">\r\n" + 
				"            <input type=\"text\" value='{{ d."+field.getName()+" }}'  name='{{ "+field.getName()+" }}' lay-verify=\"required\" class=\"layui-input\" placeholder=\"请输入名称\">\r\n" + 
				"        </div>\r\n" + 
				"    </div>\r\n";
		return html;
	}

}
